/*
 * cad_medidas.java
 *
 *  LICENÇA CC-GNU LGPL
 * 
 * EXCLUSÃO DE GARANTIA 
1.COMO A BIBLIOTECA É LICENCIADA ELA TERÁ TOTAL GARANTIA DE SUPORTE TÉCNICO,
  MAS CASO O CÓDIGO-FONTE SOFRA ALTERAÇÕES, NÃO HAVERÁ NENHUMA GARANTIA PARA A 
  BIBLIOTECA, NO LIMITE PERMITIDO PELA LEI APLICÁVEL. EXCETO QUANDO DE OUTRA FORMA
  ESTABELECIDO POR ESCRITO, OS TITULARES DOS DIREITOS AUTORAIS E/OU OUTRAS PARTES 
  FORNECEM A BIBLIOTECA "NO ESTADO EM QUE SE ENCONTRA", SEM NENHUMA GARANTIA DE 
  QUALQUER TIPO, TANTO EXPRESSA COMO IMPLÍCITA, INCLUINDO, DENTRE OUTRAS, AS GARANTIAS
  IMPLÍCITAS DE COMERCIABILIDADE E ADEQUAÇÃO PARA UMA FINALIDADE ESPECÍFICA. 
  O RISCO INTEGRAL QUANTO À QUALIDADE E DESEMPENHO DA BIBLIOTECA É ASSUMIDO POR VOCÊ.
  CASO A BIBLIOTECA CONTENHA DEFEITOS, VOCÊ ARCARÁ COM OS CUSTOS DE TODOS OS SERVIÇOS,
  REPAROS OU CORREÇÕES NECESSÁRIAS. 

 2.EM NENHUMA CIRCUNSTÂNCIA, A MENOS QUE EXIGIDO PELA LEI APLICÁVEL OU ACORDADO POR 
   ESCRITO, QUALQUER TITULAR DE DIREITOS AUTORAIS OU QUALQUER OUTRA PARTE QUE POSSA 
   MODIFICAR E/OU REDISTRIBUIR A BIBLIOTECA, CONFORME PERMITIDO ACIMA, SERÁ RESPONSÁVEL 
   PARA COM VOCÊ POR DANOS, INCLUINDO ENTRE OUTROS QUAISQUER DANOS GERAIS, ESPECIAIS, 
   FORTUITOS OU EMERGENTES, ADVINDOS DO USO OU IMPOSSIBILIDADE DE USO DA BIBLIOTECA 
   (INCLUINDO, ENTRE OUTROS, PERDA DE DADOS, DADOS SENDO GERADOS DE FORMA IMPRECISA, 
   PERDAS SOFRIDAS POR VOCÊ OU TERCEIROS OU A IMPOSSIBILIDADE DA BIBLIOTECA DE OPERAR 
   COM QUALQUER OUTRO SOFTWARE), MESMO QUE ESSE TITULAR, OU OUTRA PARTE, TENHA SIDO 
   AVISADO SOBRE A POSSIBILIDADE DESSES DANOS.
 * 
 * Created on 4 de Novembro de 2008, 19:20
 */

package cadastros;



import java.text.ParseException;
import java.util.logging.Level;
import java.util.logging.Logger;
import utilitarios.*;
import java.sql.*;
import javax.swing.*;
import java.awt.EventQueue.*;
import java.text.SimpleDateFormat;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.PlainDocument;

import java.util.HashMap;

import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRResultSetDataSource;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.view.JasperViewer;
import principal.tela_principal;
import relatorios.*;


/**
 *
 * @author  Shinigami
 */
public class cad_ferramentas extends javax.swing.JFrame {
    
    
    

    conexao con_ferramentas, con_medidas, con_tipo, con_pesq, con_log;
    data mostra_data;
    int navega = 0; //variavel para saber qual botão foi clicado
    int inicia_combo = 0;
    int modo_banco = 0; //se modo_banco = 1 --> modo salvar
                        //se modo_banco = 2 --> modo alterar
    int pesq = 1; //utilizado para validar ou não a pesquisa
    int pesquisou = 0; //para saber se passou ou não pela pesquisa
    int tipot = 0;//se for = a 1: entrada
                  //se for = a 2: saída  
    SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");
    
    String ordenacao = "codigo",cdr,disq,usbx;
    String tipof, tipotr;
    
    
    /** Creates new form cad_ferramentas */
    public cad_ferramentas() {
        initComponents();
        con_ferramentas = new conexao();
        con_ferramentas.conecta();
        con_medidas = new conexao();
        con_medidas.conecta();
        con_tipo = new  conexao();
        con_tipo.conecta();
        con_pesq = new conexao();
        con_pesq.conecta();
        con_log = new conexao();
        con_log.conecta();   
        
        mostra_data = new data();
        mostra_data.le_data();
        label_data.setText(mostra_data.dia+"/"+mostra_data.mes+"/"+mostra_data.ano);
        
        lb_usuario.setText(tela_principal.lbusuario.getText());
        
        con_medidas.executasql("select * from medidas order by medidas");
        con_tipo.executasql("select * from tipos order by nome");
        con_ferramentas.executasql("select * from ferramentas order by codigo ");
       // preencher_tabela();
        travar_campos();
        
        
       
        
        
                
        
        try {
            con_ferramentas.resultset.first();
            
            while(con_medidas.resultset.next())
                  cb_medida.addItem(con_medidas.resultset.getString("medidas"));
            
            while(con_tipo.resultset.next())
            {
                cb_tipnom.addItem(con_tipo.resultset.getString("nome"));
                
            }
                
          
            
        } catch (SQLException ex) {
            
        }
        //visualizacao(ordenacao);
        mostrar_dados();
        preencher_tabela();
       /*         try
        {
            
            con_medidas.resultset.first();
            while(con_medidas.resultset.next())
            //cb_pesquisa.addItem(con_medidasro.resultset.getString("nome"));
            
            con_medidas.resultset.first();
            mostrar_dados(); 
           
        }
        catch(SQLException erro)
        {
            JOptionPane.showMessageDialog(null,"Não localizou dados "+erro);
        }*/        
       
   
    }    
    


    

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jScrollPane1 = new javax.swing.JScrollPane();
        jTable1 = new javax.swing.JTable();
        btg_ordena = new javax.swing.ButtonGroup();
        jLabel1 = new javax.swing.JLabel();
        jLabel2 = new javax.swing.JLabel();
        jLabel3 = new javax.swing.JLabel();
        tf_codigo = new javax.swing.JTextField();
        bt_primeiro = new javax.swing.JButton();
        bt_anterior = new javax.swing.JButton();
        bt_proximo = new javax.swing.JButton();
        bt_ultimo = new javax.swing.JButton();
        bt_inserir = new javax.swing.JButton();
        bt_gravar = new javax.swing.JButton();
        bt_alterar = new javax.swing.JButton();
        bt_excluir = new javax.swing.JButton();
        bt_cancel = new javax.swing.JButton();
        tf_qtd = new javax.swing.JFormattedTextField();
        cb_medida = new javax.swing.JComboBox();
        tf_codtipo = new javax.swing.JTextField();
        cb_tipnom = new javax.swing.JComboBox();
        bt_entrada = new javax.swing.JButton();
        bt_saida = new javax.swing.JButton();
        jScrollPane2 = new javax.swing.JScrollPane();
        tab_fmt = new javax.swing.JTable();
        jPanel1 = new javax.swing.JPanel();
        jLabel4 = new javax.swing.JLabel();
        tf_pesquisa = tf_pesquisa = new JTextField();
        tf_pesquisa.setDocument( new PlainDocument()  
            {  
                @Override  
                public void insertString( int offs, String str, AttributeSet a )  
                throws BadLocationException  
                {  
                    super.insertString( offs, str.toUpperCase(), a );  
                }  
            } );  ;
            bt_pesq = new javax.swing.JButton();
            bt_tudo = new javax.swing.JButton();
            label_data = new javax.swing.JLabel();
            lb_usuario = new javax.swing.JLabel();
            jMenuBar1 = new javax.swing.JMenuBar();
            jMenu1 = new javax.swing.JMenu();
            jm_novo = new javax.swing.JMenuItem();
            jm_salvar = new javax.swing.JMenuItem();
            jm_alt = new javax.swing.JMenuItem();
            jm_del = new javax.swing.JMenuItem();
            jSeparator1 = new javax.swing.JSeparator();
            jm_adicionar = new javax.swing.JMenuItem();
            jm_retirar = new javax.swing.JMenuItem();
            jSeparator2 = new javax.swing.JSeparator();
            jMenuItem1 = new javax.swing.JMenuItem();
            jMenu2 = new javax.swing.JMenu();
            jm_imp = new javax.swing.JMenuItem();
            jm_grel = new javax.swing.JMenuItem();
            jm_logs = new javax.swing.JMenuItem();

            jTable1.setModel(new javax.swing.table.DefaultTableModel(
                new Object [][] {
                    {null, null, null, null},
                    {null, null, null, null},
                    {null, null, null, null},
                    {null, null, null, null}
                },
                new String [] {
                    "Title 1", "Title 2", "Title 3", "Title 4"
                }
            ));
            jScrollPane1.setViewportView(jTable1);

            setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
            setTitle("Cadastro de Ferramentas");
            setForeground(new java.awt.Color(255, 255, 255));
            setResizable(false);

            jLabel1.setText("Código:");

            jLabel2.setText("Tipo:");

            jLabel3.setText("QTD:");

            bt_primeiro.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagens/primeiro_registro.gif"))); // NOI18N
            bt_primeiro.setMnemonic('w');
            bt_primeiro.setToolTipText("Primeiro registro (ALT + W)");
            bt_primeiro.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    bt_primeiroActionPerformed(evt);
                }
            });

            bt_anterior.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagens/registro_anterior.gif"))); // NOI18N
            bt_anterior.setMnemonic('a');
            bt_anterior.setToolTipText("Registro anterior (ALT + A)");
            bt_anterior.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    bt_anteriorActionPerformed(evt);
                }
            });

            bt_proximo.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagens/proximo_registro.gif"))); // NOI18N
            bt_proximo.setMnemonic('d');
            bt_proximo.setToolTipText("Próximo registro (ALT + D)");
            bt_proximo.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    bt_proximoActionPerformed(evt);
                }
            });

            bt_ultimo.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagens/ultimo_registro.gif"))); // NOI18N
            bt_ultimo.setMnemonic('s');
            bt_ultimo.setToolTipText("Último registro (ALT + S)");
            bt_ultimo.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    bt_ultimoActionPerformed(evt);
                }
            });

            bt_inserir.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagens/alterar.gif"))); // NOI18N
            bt_inserir.setMnemonic('N');
            bt_inserir.setToolTipText("Novo registro (F2)");
            bt_inserir.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    bt_inserirActionPerformed(evt);
                }
            });

            bt_gravar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagens/salvar.gif"))); // NOI18N
            bt_gravar.setMnemonic('S');
            bt_gravar.setToolTipText("Gravar registro (F3)");
            bt_gravar.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    bt_gravarActionPerformed(evt);
                }
            });

            bt_alterar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagens/alterar2.gif"))); // NOI18N
            bt_alterar.setToolTipText("Alterar registro (F4)");
            bt_alterar.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    bt_alterarActionPerformed(evt);
                }
            });

            bt_excluir.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagens/lixeira1.gif"))); // NOI18N
            bt_excluir.setToolTipText("Excluir registro (F5)");
            bt_excluir.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    bt_excluirActionPerformed(evt);
                }
            });

            bt_cancel.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagens/window-close.png"))); // NOI18N
            bt_cancel.setMnemonic('c');
            bt_cancel.setToolTipText("Cancelar (ALT + C)");
            bt_cancel.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    bt_cancelActionPerformed(evt);
                }
            });

            cb_medida.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "" }));

            tf_codtipo.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    tf_codtipoActionPerformed(evt);
                }
            });
            tf_codtipo.addFocusListener(new java.awt.event.FocusAdapter() {
                public void focusLost(java.awt.event.FocusEvent evt) {
                    tf_codtipoFocusLost(evt);
                }
            });

            cb_tipnom.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "" }));
            cb_tipnom.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    cb_tipnomActionPerformed(evt);
                }
            });

            bt_entrada.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagens/Adicionar.png"))); // NOI18N
            bt_entrada.setToolTipText("Entrada de ferramentas (+)");
            bt_entrada.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    bt_entradaActionPerformed(evt);
                }
            });

            bt_saida.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagens/Retirar.png"))); // NOI18N
            bt_saida.setToolTipText("Saída de ferramentas (-)");
            bt_saida.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    bt_saidaActionPerformed(evt);
                }
            });

            tab_fmt.setModel(new javax.swing.table.DefaultTableModel(
                new Object [][] {
                    {null, null, null, null},
                    {null, null, null, null},
                    {null, null, null, null},
                    {null, null, null, null}
                },
                new String [] {
                    "Código", "Tipo", "QTD", "Unidade"
                }
            ) {
                boolean[] canEdit = new boolean [] {
                    false, false, false, false
                };

                public boolean isCellEditable(int rowIndex, int columnIndex) {
                    return canEdit [columnIndex];
                }
            });
            tab_fmt.addMouseListener(new java.awt.event.MouseAdapter() {
                public void mouseClicked(java.awt.event.MouseEvent evt) {
                    tab_fmtMouseClicked(evt);
                }
            });
            jScrollPane2.setViewportView(tab_fmt);

            jPanel1.setBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED));

            jLabel4.setText("Pesquisa:");

            tf_pesquisa.setToolTipText("Digite o nome ou as iniciais da ferramenta que deseja procurar");
            tf_pesquisa.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    tf_pesquisaActionPerformed(evt);
                }
            });

            bt_pesq.setText("Pesquisar");
            bt_pesq.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    bt_pesqActionPerformed(evt);
                }
            });

            javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
            jPanel1.setLayout(jPanel1Layout);
            jPanel1Layout.setHorizontalGroup(
                jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(jPanel1Layout.createSequentialGroup()
                    .addContainerGap()
                    .addComponent(jLabel4)
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                    .addComponent(tf_pesquisa, javax.swing.GroupLayout.DEFAULT_SIZE, 309, Short.MAX_VALUE)
                    .addGap(15, 15, 15)
                    .addComponent(bt_pesq)
                    .addContainerGap())
            );
            jPanel1Layout.setVerticalGroup(
                jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
                    .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(jLabel4)
                        .addComponent(tf_pesquisa, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addComponent(bt_pesq))
                    .addContainerGap())
            );

            bt_tudo.setMnemonic('T');
            bt_tudo.setText("Mostrar Tudo");
            bt_tudo.setToolTipText("Mostrar tudo (ALT + T)");
            bt_tudo.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    bt_tudoActionPerformed(evt);
                }
            });

            label_data.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Data", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 0, 11), new java.awt.Color(0, 0, 0))); // NOI18N

            lb_usuario.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Usuário", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 0, 11), new java.awt.Color(0, 0, 0))); // NOI18N

            jMenu1.setText("Arquivo");

            jm_novo.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F2, 0));
            jm_novo.setText("Novo");
            jm_novo.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    jm_novoActionPerformed(evt);
                }
            });
            jMenu1.add(jm_novo);

            jm_salvar.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F3, 0));
            jm_salvar.setText("Salvar");
            jm_salvar.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    jm_salvarActionPerformed(evt);
                }
            });
            jMenu1.add(jm_salvar);

            jm_alt.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F4, 0));
            jm_alt.setText("Alterar");
            jm_alt.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    jm_altActionPerformed(evt);
                }
            });
            jMenu1.add(jm_alt);

            jm_del.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F5, 0));
            jm_del.setText("Excluir");
            jm_del.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    jm_delActionPerformed(evt);
                }
            });
            jMenu1.add(jm_del);
            jMenu1.add(jSeparator1);

            jm_adicionar.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_ADD, 0));
            jm_adicionar.setText("Adicionar");
            jm_adicionar.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    jm_adicionarActionPerformed(evt);
                }
            });
            jMenu1.add(jm_adicionar);

            jm_retirar.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_SUBTRACT, 0));
            jm_retirar.setText("Retirar");
            jm_retirar.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    jm_retirarActionPerformed(evt);
                }
            });
            jMenu1.add(jm_retirar);
            jMenu1.add(jSeparator2);

            jMenuItem1.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F12, 0));
            jMenuItem1.setText("Sair");
            jMenuItem1.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    jMenuItem1ActionPerformed(evt);
                }
            });
            jMenu1.add(jMenuItem1);

            jMenuBar1.add(jMenu1);

            jMenu2.setText("Relatórios");

            jm_imp.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F6, 0));
            jm_imp.setText("Imprimir");
            jm_imp.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    jm_impActionPerformed(evt);
                }
            });
            jMenu2.add(jm_imp);

            jm_grel.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F7, 0));
            jm_grel.setText("Gerar Relatório");
            jm_grel.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    jm_grelActionPerformed(evt);
                }
            });
            jMenu2.add(jm_grel);

            jm_logs.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F8, 0));
            jm_logs.setText("Logs");
            jm_logs.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    jm_logsActionPerformed(evt);
                }
            });
            jMenu2.add(jm_logs);

            jMenuBar1.add(jMenu2);

            setJMenuBar(jMenuBar1);

            javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
            getContentPane().setLayout(layout);
            layout.setHorizontalGroup(
                layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(layout.createSequentialGroup()
                    .addContainerGap()
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                        .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                            .addComponent(bt_entrada, javax.swing.GroupLayout.PREFERRED_SIZE, 48, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                            .addComponent(bt_saida, javax.swing.GroupLayout.PREFERRED_SIZE, 48, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addGap(201, 201, 201))
                        .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                                .addGroup(layout.createSequentialGroup()
                                    .addComponent(bt_tudo)
                                    .addGap(388, 388, 388))
                                .addComponent(jPanel1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                                    .addComponent(jScrollPane2, javax.swing.GroupLayout.Alignment.LEADING)
                                    .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
                                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                            .addGroup(layout.createSequentialGroup()
                                                .addComponent(bt_primeiro, javax.swing.GroupLayout.PREFERRED_SIZE, 48, javax.swing.GroupLayout.PREFERRED_SIZE)
                                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                                .addComponent(bt_anterior, javax.swing.GroupLayout.PREFERRED_SIZE, 48, javax.swing.GroupLayout.PREFERRED_SIZE)
                                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                                .addComponent(bt_proximo, javax.swing.GroupLayout.PREFERRED_SIZE, 48, javax.swing.GroupLayout.PREFERRED_SIZE)
                                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                                .addComponent(bt_ultimo, javax.swing.GroupLayout.PREFERRED_SIZE, 48, javax.swing.GroupLayout.PREFERRED_SIZE)
                                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                                .addComponent(bt_inserir, javax.swing.GroupLayout.PREFERRED_SIZE, 48, javax.swing.GroupLayout.PREFERRED_SIZE)
                                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                                .addComponent(bt_gravar, javax.swing.GroupLayout.PREFERRED_SIZE, 48, javax.swing.GroupLayout.PREFERRED_SIZE))
                                            .addGroup(layout.createSequentialGroup()
                                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                                    .addComponent(jLabel3)
                                                    .addComponent(jLabel1)
                                                    .addComponent(jLabel2))
                                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                                                    .addComponent(tf_qtd, javax.swing.GroupLayout.Alignment.TRAILING)
                                                    .addComponent(tf_codtipo, 0, 0, Short.MAX_VALUE)
                                                    .addComponent(tf_codigo, javax.swing.GroupLayout.PREFERRED_SIZE, 49, javax.swing.GroupLayout.PREFERRED_SIZE))
                                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                                    .addComponent(cb_medida, 0, 222, Short.MAX_VALUE)
                                                    .addComponent(cb_tipnom, 0, 222, Short.MAX_VALUE))))
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                                            .addGroup(layout.createSequentialGroup()
                                                .addComponent(bt_alterar, javax.swing.GroupLayout.PREFERRED_SIZE, 48, javax.swing.GroupLayout.PREFERRED_SIZE)
                                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                                .addComponent(bt_excluir, javax.swing.GroupLayout.PREFERRED_SIZE, 48, javax.swing.GroupLayout.PREFERRED_SIZE)
                                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                                .addComponent(bt_cancel, javax.swing.GroupLayout.PREFERRED_SIZE, 48, javax.swing.GroupLayout.PREFERRED_SIZE))
                                            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                                                .addComponent(lb_usuario, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                                .addComponent(label_data, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 124, Short.MAX_VALUE))))))
                            .addContainerGap())))
            );
            layout.setVerticalGroup(
                layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                    .addContainerGap()
                    .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                        .addGroup(layout.createSequentialGroup()
                            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                .addComponent(jLabel1)
                                .addComponent(tf_codigo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                            .addGap(12, 12, 12)
                            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                .addComponent(jLabel2)
                                .addComponent(tf_codtipo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addComponent(cb_tipnom, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                            .addGap(12, 12, 12)
                            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                .addComponent(jLabel3)
                                .addComponent(tf_qtd, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addComponent(cb_medida, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
                        .addGroup(layout.createSequentialGroup()
                            .addComponent(label_data, javax.swing.GroupLayout.PREFERRED_SIZE, 39, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                            .addComponent(lb_usuario, javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE)))
                    .addGap(11, 11, 11)
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                        .addGroup(layout.createSequentialGroup()
                            .addComponent(bt_primeiro, javax.swing.GroupLayout.PREFERRED_SIZE, 48, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addGap(1, 1, 1))
                        .addComponent(bt_anterior, javax.swing.GroupLayout.PREFERRED_SIZE, 48, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addComponent(bt_proximo, javax.swing.GroupLayout.PREFERRED_SIZE, 48, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                .addComponent(bt_inserir, javax.swing.GroupLayout.PREFERRED_SIZE, 48, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addComponent(bt_gravar, javax.swing.GroupLayout.PREFERRED_SIZE, 48, javax.swing.GroupLayout.PREFERRED_SIZE))
                            .addComponent(bt_alterar, javax.swing.GroupLayout.PREFERRED_SIZE, 48, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                .addComponent(bt_cancel, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 48, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                                    .addComponent(bt_excluir, javax.swing.GroupLayout.PREFERRED_SIZE, 48, javax.swing.GroupLayout.PREFERRED_SIZE)
                                    .addGap(1, 1, 1)))
                            .addComponent(bt_ultimo, javax.swing.GroupLayout.PREFERRED_SIZE, 48, javax.swing.GroupLayout.PREFERRED_SIZE)))
                    .addGap(4, 4, 4)
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                        .addComponent(bt_entrada, javax.swing.GroupLayout.PREFERRED_SIZE, 48, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addComponent(bt_saida, javax.swing.GroupLayout.PREFERRED_SIZE, 48, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                    .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 121, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addComponent(bt_tudo)
                    .addContainerGap(29, Short.MAX_VALUE))
            );

            java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
            setBounds((screenSize.width-513)/2, (screenSize.height-510)/2, 513, 510);
        }// </editor-fold>//GEN-END:initComponents

private void bt_primeiroActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bt_primeiroActionPerformed

    try
        {
           navega = 1;
            con_ferramentas.resultset.first();
            mostrar_dados();
        }
        catch(SQLException erro)
        {
            JOptionPane.showMessageDialog(null,"Não localizou dados "+erro);
        }        

    
    
}//GEN-LAST:event_bt_primeiroActionPerformed

private void bt_proximoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bt_proximoActionPerformed

    try
        {
        if (con_ferramentas.resultset.isLast())
            {
                navega = 2;
            }
           con_ferramentas.resultset.next();
           mostrar_dados(); 
           
        }
        catch(SQLException erro)
        {
            JOptionPane.showMessageDialog(null,"Não localizou dados "+erro);
        }        

    
}//GEN-LAST:event_bt_proximoActionPerformed

private void bt_anteriorActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bt_anteriorActionPerformed

    try
        {
            if (con_ferramentas.resultset.isFirst())
            {
                navega = 1;
            } 
            con_ferramentas.resultset.previous();
            mostrar_dados(); 
            
            
        }
        catch(SQLException erro)
        {
            JOptionPane.showMessageDialog(null,"Não localizou dados "+erro);
        }        

    
    
}//GEN-LAST:event_bt_anteriorActionPerformed

private void bt_ultimoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bt_ultimoActionPerformed

    try
        {
            navega = 2;
            con_ferramentas.resultset.last();
            mostrar_dados(); 
           
        }
        catch(SQLException erro)
        {
            JOptionPane.showMessageDialog(null,"Não localizou dados "+erro);
        }        

    
    
}//GEN-LAST:event_bt_ultimoActionPerformed

private void bt_gravarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bt_gravarActionPerformed

    if (modo_banco == 1)
{
    gravar();
}
else if (modo_banco == 2)
{   
    alterar();

}

    
}//GEN-LAST:event_bt_gravarActionPerformed

private void bt_inserirActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bt_inserirActionPerformed

    destrava();
    fecha_navegacao();
    bt_excluir.setEnabled(false);
    bt_alterar.setEnabled(false);
    tf_pesquisa.setEditable(false);
    bt_pesq.setEnabled(false);
    bt_tudo.setEnabled(false);
    tab_fmt.setEnabled(false);
    bt_entrada.setEnabled(false);
    bt_saida.setEnabled(false);
    jm_del.setEnabled(false);
    jm_alt.setEnabled(false);
    jm_adicionar.setEnabled(false);
    jm_retirar.setEnabled(false);
    jm_imp.setEnabled(false);
     DefaultTableModel tableModel =(DefaultTableModel) tab_fmt.getModel();  
     tableModel.setNumRows(0);//limpa o JTable
    
    
    tf_pesquisa.setText("");
    tf_codigo.setText("");
    tf_codtipo.setText("");
    cb_tipnom.setSelectedItem("");
    tf_qtd.setText("");
    cb_medida.setSelectedItem("");
    tf_codtipo.requestFocus();
    
    modo_banco = 1;

    
}//GEN-LAST:event_bt_inserirActionPerformed

private void bt_alterarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bt_alterarActionPerformed

   tf_pesquisa.setText("");
   bt_excluir.setEnabled(false); 
   bt_inserir.setEnabled(false); 
   tf_pesquisa.setEditable(false);
   bt_pesq.setEnabled(false);
   bt_tudo.setEnabled(false);
   tab_fmt.setEnabled(false);
   bt_entrada.setEnabled(false);
   bt_saida.setEnabled(false);
   jm_del.setEnabled(false);
   jm_novo.setEnabled(false);
   jm_adicionar.setEnabled(false);
   jm_retirar.setEnabled(false);
   jm_imp.setEnabled(false);
   DefaultTableModel tableModel =(DefaultTableModel) tab_fmt.getModel();  
   tableModel.setNumRows(0);
   
   destrava();
   fecha_navegacao();
   tf_codtipo.requestFocus();
       
    modo_banco = 2;

    
}//GEN-LAST:event_bt_alterarActionPerformed

private void bt_excluirActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bt_excluirActionPerformed
    
        try
    {
       
        
       if (tf_codtipo.getText().equals(""))
       {
        JOptionPane.showMessageDialog(null,"Nenhum registro foi selecionado para exclusão!");
        return;
             
       }
         
       if (tf_qtd.getText().equals(""))
       {
        JOptionPane.showMessageDialog(null,"Nenhum registro foi selecionado para exclusão!");
        return;
             
       }
       
       
      
       
       
        
        
        String sql = "select * from ferramentas Where codigo ="+tf_codigo.getText();
        con_ferramentas.executasql(sql);
        con_ferramentas.resultset.first();
        String nome = "Deletar o registros das ferramentas: "+con_tipo.resultset.getString("nome")+"?";
        int opcao_escolhida = JOptionPane.showConfirmDialog(null, nome,"Exclusão ",JOptionPane.YES_NO_OPTION);
        
        if (opcao_escolhida == JOptionPane.NO_OPTION)
        {
            con_ferramentas.executasql("select * from ferramentas");
            con_ferramentas.resultset.first();
            mostrar_dados();
            preencher_tabela();
            //visualizacao(ordenacao);
            navega = 0;
            inicia_combo = 0;
            return ;//caso seja escolhida a opção não excluir, ele
                   // retorna para a posição normal sem executar mais nenhum código
        }
        
        else if (opcao_escolhida == JOptionPane.YES_OPTION)
        {
            sql = "DELETE from ferramentas Where codigo ="+tf_codigo.getText();
            int conseguiu_excluir = con_ferramentas.statement.executeUpdate(sql);
            if (conseguiu_excluir == 1)
            {
                JOptionPane.showMessageDialog(null,"Dados excluídos com sucesso!");
                //atualizando o resultset
                con_ferramentas.executasql("select * from ferramentas");
                //atualiza_cbpesq();
                con_ferramentas.resultset.first();//posiciona no 1º registro
                mostrar_dados();//chama a função que mostra os dados 
                preencher_tabela();
                //visualizacao(ordenacao);
                inicia_combo = 0;
            }
          
       
        
     }
     }   
    catch (SQLException erro)
    {
        JOptionPane.showMessageDialog(null,"Não foi possível excluir o registro!"+erro);
    }
    tf_pesquisa.setText("");
    travar_campos();

    
}//GEN-LAST:event_bt_excluirActionPerformed

private void bt_cancelActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bt_cancelActionPerformed

       try
   {        
     
    tf_pesquisa.setText("");
    bt_inserir.setEnabled(true);
    bt_alterar.setEnabled(true);
    bt_excluir.setEnabled(true);
    tf_pesquisa.setEditable(true);
    bt_pesq.setEnabled(true);
    bt_tudo.setEnabled(true);
    tab_fmt.setEnabled(true);
    bt_entrada.setEnabled(true);
    bt_saida.setEnabled(true);
    jm_del.setEnabled(true);
    jm_novo.setEnabled(true);
    jm_alt.setEnabled(true);
    jm_adicionar.setEnabled(true);
    jm_retirar.setEnabled(true);
    jm_imp.setEnabled(true);
    
    travar_campos();
    abre_navegacao();
    con_ferramentas.resultset.first();
    mostrar_dados();
    preencher_tabela();
   }
   catch(Exception erro)
   {
       JOptionPane.showMessageDialog(null, "Erro ao cancelar operação"+erro);
   }        

    
}//GEN-LAST:event_bt_cancelActionPerformed

private void jm_salvarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jm_salvarActionPerformed

    if (modo_banco == 1)
{
    gravar();
}
else if (modo_banco == 2)
{   alterar();

}
    
   
}//GEN-LAST:event_jm_salvarActionPerformed

private void jm_altActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jm_altActionPerformed

  bt_alterarActionPerformed(evt);
    
}//GEN-LAST:event_jm_altActionPerformed

private void jm_delActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jm_delActionPerformed

    bt_excluirActionPerformed(evt); 
      
}//GEN-LAST:event_jm_delActionPerformed

private void jm_novoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jm_novoActionPerformed
  
    bt_inserirActionPerformed(evt);
    
}//GEN-LAST:event_jm_novoActionPerformed

private void cb_tipnomActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cb_tipnomActionPerformed

    //procedimento para atualizar o código do bairro
    //if (privbai == false)
    //{
        try
        {
            
            if (cb_tipnom.getSelectedItem().equals(""))
            {
                tf_codtipo.setText("");
            }
            
            String sql = "select * from tipos Where nome like '"+cb_tipnom.getSelectedItem()+"'";
            con_tipo.executasql(sql);
            con_tipo.resultset.first();
            tf_codtipo.setText(con_tipo.resultset.getString("codigo"));
            
            
            
        }
        catch(SQLException erro)
        {
            //JOptionPane.showMessageDialog(null, "Erro ao buscar o código do endereço!"+erro);
        }
   
    //}
     //privbai = false;
    
}//GEN-LAST:event_cb_tipnomActionPerformed

private void tf_codtipoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_tf_codtipoActionPerformed
    if(tf_codtipo.getText().equals(""))
    {
        
    }
    else
    cb_tipnom.requestFocus();    
}//GEN-LAST:event_tf_codtipoActionPerformed

private void tf_codtipoFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_tf_codtipoFocusLost

    if(tf_codtipo.getText().equals(""))
    {
        
    }
    else
    atualiza_cbstipo();
    
}//GEN-LAST:event_tf_codtipoFocusLost

private void bt_entradaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bt_entradaActionPerformed
                
                tipot = 1;
                
                int quant = 0,qtdx = 0,qtdtot = 0;//estas variáceis guardam respectivamente
                                      //a quantidade a ser adicionada, a qtd que já existia e a nova quantidade(soma) da ferramenta   
                String ler_qtd;
                
                ler_qtd = JOptionPane.showInputDialog("Informe a quantidade de ferramentas à adicionar ao estoque. Verifique a unidade de medida.");
               if(ler_qtd != null)
                {
                    quant = Integer.parseInt(ler_qtd);
                }
                else
                {
                    return;
                }
                
                
                try
                {
                 
                  java.sql.Date datal = new java.sql.Date(format.parse(label_data.getText()).getTime());   
                  qtdx = con_ferramentas.resultset.getInt("qtd");
                  
                  qtdtot = qtdx + quant;
                  
                  
                String sql = "UPDATE ferramentas SET qtd ='"+qtdtot+"',medida ='"+cb_medida.getSelectedItem()+"',tipo ='"+tf_codtipo.getText()+"'Where codigo ="+tf_codigo.getText();
                con_ferramentas.statement.executeUpdate(sql);
                JOptionPane.showMessageDialog(null,"Alteração realizada com sucesso!");
                
                if(tipot == 1)
                {
                   tipotr = "ENTRADA"; 
                }
                               
               
                con_log.executasql("select * from log_ferramentas where tipotr like 'A'");
                String qsql = "insert into log_ferramentas (tipotr,tipofer,qtd,usuario,data) values ('"
                +tipotr+"','"+        
                cb_tipnom.getSelectedItem()+"','"+ 
                quant+"','"+ 
                lb_usuario.getText()+"','"+ 
                datal+"')";
                con_log.statement.executeUpdate(qsql);
               
                
                //atualizando o resultset
                con_ferramentas.executasql("select * from ferramentas");
                //atualiza_cbpesq();
                con_ferramentas.resultset.first();
                mostrar_dados();
                preencher_tabela();
                //visualizacao(ordenacao);
                }
        catch (ParseException ex) {
            Logger.getLogger(cad_ferramentas.class.getName()).log(Level.SEVERE, null, ex);
        }                
                catch (SQLException erro)
                {
                    JOptionPane.showConfirmDialog(null,"Não foi possível alterar os dados! "+erro);
                }
       
    //pesq = 0;
   
    modo_banco = 0;
    tf_pesquisa.setText("");
    bt_inserir.setEnabled(true);
    bt_alterar.setEnabled(true);
    bt_excluir.setEnabled(true);
    travar_campos();
    abre_navegacao();
}//GEN-LAST:event_bt_entradaActionPerformed

private void bt_saidaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bt_saidaActionPerformed
                
                tipot = 2;
            
                 int quant = 0,qtdx = 0,qtdtot = 0;//estas variáceis guardam respectivamente
                                      //a quantidade a se dar baixa, a qtd que já existia e a nova quantidade(subtração) da ferramenta   
                String ler_qtd;
                
                ler_qtd = JOptionPane.showInputDialog("Informe a quantidade de ferramentas à retirar do estoque. Verifique a unidade de medida.");
                if(ler_qtd != null)
                {
                    quant = Integer.parseInt(ler_qtd);
                }
                else
                {
                    return;
                }
                try
                {
                  
                    java.sql.Date datal = new java.sql.Date(format.parse(label_data.getText()).getTime());   
                    qtdx = con_ferramentas.resultset.getInt("qtd"); 
                  if (quant > qtdx)
                  {
                      JOptionPane.showMessageDialog(null, "A quantidade informada é maior que a existente no estoque. Operação cancelada");
                      return;
                  }
                  if (quant == qtdx)
                  {
                      JOptionPane.showMessageDialog(null, "Depois desta operação não haverá mais nenhuma desta ferramenta no estoque");
                  }
                  qtdtot = qtdx - quant;
                  
                  
                String sql = "UPDATE ferramentas SET qtd ='"+qtdtot+"',medida ='"+cb_medida.getSelectedItem()+"',tipo ='"+tf_codtipo.getText()+"'Where codigo ="+tf_codigo.getText();
                con_ferramentas.statement.executeUpdate(sql);
                JOptionPane.showMessageDialog(null,"Alteração realizada com sucesso!");
                
                if(tipot == 2)
                {
                   tipotr = "SAÍDA"; 
                }
                               
               
                con_log.executasql("select * from log_ferramentas where tipotr like 'A'");
                String qsql = "insert into log_ferramentas (tipotr,tipofer,qtd,usuario,data) values ('"
                +tipotr+"','"+        
                cb_tipnom.getSelectedItem()+"','"+ 
                quant+"','"+ 
                lb_usuario.getText()+"','"+ 
                datal+"')";
                con_log.statement.executeUpdate(qsql);
                
                
                //atualizando o resultset
                con_ferramentas.executasql("select * from ferramentas");
                //atualiza_cbpesq();
                con_ferramentas.resultset.first();
                mostrar_dados();
                //visualizacao(ordenacao);
                preencher_tabela();
                }
        catch (ParseException ex) {
            Logger.getLogger(cad_ferramentas.class.getName()).log(Level.SEVERE, null, ex);
        }                
                catch (SQLException erro)
                {
                    JOptionPane.showConfirmDialog(null,"Não foi possível alterar os dados! "+erro);
                }
       
    //pesq = 0;
   
    modo_banco = 0;
    tf_pesquisa.setText("");
    bt_inserir.setEnabled(true);
    bt_alterar.setEnabled(true);
    bt_excluir.setEnabled(true);
    travar_campos();
    abre_navegacao();
    
}//GEN-LAST:event_bt_saidaActionPerformed

private void jm_retirarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jm_retirarActionPerformed

    bt_saidaActionPerformed(evt);
    
}//GEN-LAST:event_jm_retirarActionPerformed

private void jm_adicionarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jm_adicionarActionPerformed

     bt_entradaActionPerformed(evt);
    
}//GEN-LAST:event_jm_adicionarActionPerformed

private void tf_pesquisaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_tf_pesquisaActionPerformed
    
   preencher_tabelapesq(); 
    
}//GEN-LAST:event_tf_pesquisaActionPerformed

private void bt_tudoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bt_tudoActionPerformed

    con_ferramentas.executasql("select * from ferramentas order by codigo");
    preencher_tabela();
    
}//GEN-LAST:event_bt_tudoActionPerformed

private void bt_pesqActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bt_pesqActionPerformed

    preencher_tabelapesq();
    
}//GEN-LAST:event_bt_pesqActionPerformed

private void tab_fmtMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_tab_fmtMouseClicked

if (evt.getClickCount() ==1) 
{
int linha = tab_fmt.getSelectedRow(); //cria uma variável (linha) do tipo integer para receber o valor da linha selecionada no JTable
TableModel modelo = (TableModel) tab_fmt.getModel(); //cria uma variável (modelo) do tipo TableModel para poder tratar os dados que estão na tabela
  String cod =(String) modelo.getValueAt(linha,0); //variável cod recebe o código que está no jtable na linha selecionada 

  if(cod == null )
    {
        return;
    }
  
  con_ferramentas.executasql("select * from ferramentas where codigo="+cod); //seleciona o registro com o mesmo código que o do JTable
try 
{
      
      con_ferramentas.resultset.first();
      mostrar_dados();
                
    } 
catch (SQLException ex) 
{
                Logger.getLogger(cad_ferramentas.class.getName()).log(Level.SEVERE, null, ex);
}



} 
    
}//GEN-LAST:event_tab_fmtMouseClicked

private void jm_impActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jm_impActionPerformed

    relat_fmt();
    
}//GEN-LAST:event_jm_impActionPerformed

private void jm_grelActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jm_grelActionPerformed

    new rel_fmt().setVisible(true);
    
}//GEN-LAST:event_jm_grelActionPerformed

private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem1ActionPerformed

       setVisible(false);     
    
}//GEN-LAST:event_jMenuItem1ActionPerformed

private void jm_logsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jm_logsActionPerformed

new rel_logs().setVisible(true);    
    
}//GEN-LAST:event_jm_logsActionPerformed
 
    
     /**
    * @param args the command line arguments
    */
public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new cad_ferramentas().setVisible(true);
            }
        });
    }
   

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton bt_alterar;
    private javax.swing.JButton bt_anterior;
    private javax.swing.JButton bt_cancel;
    private javax.swing.JButton bt_entrada;
    private javax.swing.JButton bt_excluir;
    private javax.swing.JButton bt_gravar;
    private javax.swing.JButton bt_inserir;
    private javax.swing.JButton bt_pesq;
    private javax.swing.JButton bt_primeiro;
    private javax.swing.JButton bt_proximo;
    private javax.swing.JButton bt_saida;
    private javax.swing.JButton bt_tudo;
    private javax.swing.JButton bt_ultimo;
    private javax.swing.ButtonGroup btg_ordena;
    private javax.swing.JComboBox cb_medida;
    private javax.swing.JComboBox cb_tipnom;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JMenu jMenu1;
    private javax.swing.JMenu jMenu2;
    private javax.swing.JMenuBar jMenuBar1;
    private javax.swing.JMenuItem jMenuItem1;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JSeparator jSeparator1;
    private javax.swing.JSeparator jSeparator2;
    private javax.swing.JTable jTable1;
    private javax.swing.JMenuItem jm_adicionar;
    private javax.swing.JMenuItem jm_alt;
    private javax.swing.JMenuItem jm_del;
    private javax.swing.JMenuItem jm_grel;
    private javax.swing.JMenuItem jm_imp;
    private javax.swing.JMenuItem jm_logs;
    private javax.swing.JMenuItem jm_novo;
    private javax.swing.JMenuItem jm_retirar;
    private javax.swing.JMenuItem jm_salvar;
    public static javax.swing.JLabel label_data;
    public static javax.swing.JLabel lb_usuario;
    private javax.swing.JTable tab_fmt;
    private javax.swing.JTextField tf_codigo;
    private javax.swing.JTextField tf_codtipo;
    private javax.swing.JTextField tf_pesquisa;
    private javax.swing.JFormattedTextField tf_qtd;
    // End of variables declaration//GEN-END:variables

    public void mostrar_dados()
    {
         try
        {
                                   
            tf_codigo.setText(con_ferramentas.resultset.getString("codigo"));
            tf_codtipo.setText(con_ferramentas.resultset.getString("tipo"));
            tf_qtd.setText(con_ferramentas.resultset.getString("qtd"));
            cb_medida.setSelectedItem(con_ferramentas.resultset.getString("medida"));
                       
           
        }
        catch(SQLException erro)
        {
            if (navega == 1)
            
                JOptionPane.showMessageDialog(null,"Este é o primeiro registro!");
               
            else if (navega == 2)
           
                JOptionPane.showMessageDialog(null,"Este é o último registro!");
                
             else
                JOptionPane.showMessageDialog(null,"Não localizou dados "+erro);
                
            navega = 0;
            
        }  
         atualiza_cbstipo();
         
    }
    
    public void gravar()
   {
       try
{
               
     pesq = 0;
           
      if (tf_codtipo.getText().equals(""))
 {    
     JOptionPane.showMessageDialog(null,"Selecione ou digite o código da ferramenta!");
    travar_campos();
     destrava();
     tf_codtipo.requestFocus();
     return;     
 }
 
    if (tf_qtd.getText().equals(""))
 {    
     JOptionPane.showMessageDialog(null,"Digite a quantidade da ferramenta no estoque!");
     //travar_campos();
     destrava();
     tf_qtd.requestFocus();
     return;
         
 }
     
     
    if (cb_medida.getSelectedItem().equals(""))
 {    
     JOptionPane.showMessageDialog(null,"Escolha a unidade de medida!");
    destrava();
     cb_medida.requestFocus();
     return;
         
 }
      
     
         
     
      
       
      
      
   String verifica = "n";
   con_ferramentas.resultset.first();
   while(verifica.equals("n")) 
   {
   if (con_ferramentas.resultset.getString("tipo").equals(tf_codtipo.getText()))
   {
       verifica = "s";
           String atencao = "Já existe um registro com os dados: "+con_tipo.resultset.getString("nome")+", e conector: "+con_tipo.resultset.getString("conector")+". Para adicionar mais unidades, clique no botão de entrada de ferramentas!";
           JOptionPane.showMessageDialog(null,"Atenção! "+atencao);
           
            con_ferramentas.resultset.first();
            
            bt_inserir.setEnabled(true);
            bt_alterar.setEnabled(true);
            bt_excluir.setEnabled(true);
            travar_campos();
            abre_navegacao();
            mostrar_dados();
            return;
          /* if (opcao == JOptionPane.NO_OPTION)
           {
           tf_codtipo.requestFocus();
           return; //sai sem compilar o restante do codigo
          
           }*/
           }
   else
   {
       if (con_ferramentas.resultset.isLast())
       {
           break;
       }
       else
               con_ferramentas.resultset.next();
       
   }
   } 
   
   
 //código para gravar os dados no banco (dentro do try)
              
             String sqlinsert = "insert into ferramentas (qtd,medida,tipo) values ('"+
             tf_qtd.getText()+"','"+        
             cb_medida.getSelectedItem()+"','"+ 
             tf_codtipo.getText()+"')";
             
             
             con_ferramentas.resultset.last();
                     
             con_ferramentas.statement.executeUpdate(sqlinsert);
             JOptionPane.showMessageDialog(null,"Dados salvos com sucesso!");

             //atualiza o resultset
             con_ferramentas.resultset = con_ferramentas.statement.executeQuery("select * from ferramentas");
             //con_ferramentas.executasql("select * from ferramentas");
             //atualiza_cbpesq();
             con_ferramentas.resultset.first();//posicona no primeiro registro
             mostrar_dados();
             preencher_tabela();
             //visualizacao(ordenacao);
 }

  catch (SQLException erro)
 {
     JOptionPane.showMessageDialog(null,"Erro ao gravar dados!"+erro);
 }
  //pesq = 0;  
  modo_banco = 0;
  tf_pesquisa.setText("");
  bt_inserir.setEnabled(true);
  bt_alterar.setEnabled(true);
  bt_excluir.setEnabled(true);
  tf_pesquisa.setEditable(true);
  bt_pesq.setEnabled(true);
  bt_tudo.setEnabled(true);
  tab_fmt.setEnabled(true);
  bt_entrada.setEnabled(true);
  bt_saida.setEnabled(true);
  jm_del.setEnabled(true);
  jm_novo.setEnabled(true);
  jm_alt.setEnabled(true);
  jm_adicionar.setEnabled(true);
  jm_retirar.setEnabled(true);
  jm_imp.setEnabled(true);
  travar_campos();
  abre_navegacao();
 }

public void alterar()
{
     try
    {
     
     pesq = 0;    
         
  if (tf_codtipo.getText().equals(""))
 {    
     JOptionPane.showMessageDialog(null,"Digite o nome da ferramenta!");
    travar_campos();
     destrava();
     tf_codtipo.requestFocus();
     return;     
 }
 
    if (tf_qtd.getText().equals(""))
 {    
     JOptionPane.showMessageDialog(null,"Digite a quantidade da ferramenta no estoque!");
     //travar_campos();
     destrava();
     tf_qtd.requestFocus();
     return;
         
 }
     
     
    if (cb_medida.getSelectedItem().equals(""))
 {    
     JOptionPane.showMessageDialog(null,"Escolha a unidade de medida!");
    destrava();
     cb_medida.requestFocus();
     return;
         
 }
     
     
     
  /* String verifica = "n";
   con_ferramentas.resultset.first();
   while(verifica.equals("n")) 
   {
   if (con_ferramentas.resultset.getString("tipo").equals(tf_codtipo.getText()))
   {
           verifica = "s";
           String atencao = "Já existe um registro com a ferramenta: "+con_tipo.resultset.getString("nome")+", e conector: "+con_tipo.resultset.getString("conector")+". Deseja salvar assim mesmo?";
           int opcao = JOptionPane.showConfirmDialog(null,atencao,"Atenção ",JOptionPane.YES_NO_OPTION);
           if (opcao == JOptionPane.NO_OPTION)
           {
           tf_codtipo.requestFocus();
           return; //sai sem compilar o restante do codigo
          
           }
           }
   else
   {
     
       if (con_ferramentas.resultset.isLast())
       {
           break;
       }
       else
               con_ferramentas.resultset.next();
       
   }
   } */ 
        
        String sql = "UPDATE ferramentas SET qtd ='"+Integer.parseInt(tf_qtd.getText())+"',medida ='"+cb_medida.getSelectedItem()+"',tipo ='"+tf_codtipo.getText()+"'Where codigo ="+tf_codigo.getText();
        con_ferramentas.statement.executeUpdate(sql);
        JOptionPane.showMessageDialog(null,"Alteração realizada com sucesso!");
        
        //atualizando o resultset
        con_ferramentas.executasql("select * from ferramentas");
        //atualiza_cbpesq();
        con_ferramentas.resultset.first();
        mostrar_dados();
        preencher_tabela();
       // visualizacao(ordenacao);
    } 
    
    
    catch (SQLException erro)
    {
        JOptionPane.showConfirmDialog(null,"Não foi possível alterar os dados! "+erro);
    }
       
    //pesq = 0;
   
    modo_banco = 0;
    tf_pesquisa.setText("");
    bt_inserir.setEnabled(true);
    bt_alterar.setEnabled(true);
    bt_excluir.setEnabled(true);
    tf_pesquisa.setEditable(true);
    bt_pesq.setEnabled(true);
    bt_tudo.setEnabled(true);
    tab_fmt.setEnabled(true);
    bt_entrada.setEnabled(true);
    bt_saida.setEnabled(true);
    jm_del.setEnabled(true);
    jm_novo.setEnabled(true);
    jm_alt.setEnabled(true);
    jm_adicionar.setEnabled(true);
    jm_retirar.setEnabled(true);
    jm_imp.setEnabled(true);
    travar_campos();
    abre_navegacao();
}
public void travar_campos()
{
    
    tf_codigo.setEditable(false);
    tf_codtipo.setEditable(false);
    bt_gravar.setEnabled(false);
    jm_salvar.setEnabled(false);
    tf_qtd.setEditable(false);
    cb_medida.setEnabled(false);
    cb_tipnom.setEnabled(false);
            
}

public void destrava()
{
    tf_codtipo.setEditable(true);
    bt_gravar.setEnabled(true);
    jm_salvar.setEnabled(true);
    tf_qtd.setEditable(true);
    cb_medida.setEnabled(true);
    cb_tipnom.setEnabled(true);
}
    
public void fecha_navegacao()
{
     bt_primeiro.setEnabled(false);
    bt_anterior.setEnabled(false);
    bt_proximo.setEnabled(false);
    bt_ultimo.setEnabled(false);
}
public void abre_navegacao()
{
    bt_primeiro.setEnabled(true);
    bt_anterior.setEnabled(true);
    bt_proximo.setEnabled(true);
    bt_ultimo.setEnabled(true);
}

public void atualiza_cbstipo()
{
    //procedimento para atualizar os combo box de nome e conector da ferramenta
    try
    {
        String sql="select * from tipos Where codigo ="+tf_codtipo.getText();
        con_tipo.executasql(sql);
        con_tipo.resultset.first();
        cb_tipnom.setSelectedItem(con_tipo.resultset.getString("nome"));
        
    }
    catch(SQLException erro)
    {
        JOptionPane.showMessageDialog(null, "Tipos de ferramentas não encontrado!");
        tf_codtipo.setText("");
        tf_codtipo.requestFocus();
        
    }
}

    
public void preencher_tabela()
{
   
    tab_fmt.getColumnModel().getColumn(0).setPreferredWidth(10);
    tab_fmt.getColumnModel().getColumn(1).setPreferredWidth(150);
    tab_fmt.getColumnModel().getColumn(2).setPreferredWidth(20);
    tab_fmt.getColumnModel().getColumn(3).setPreferredWidth(70);
    
    DefaultTableModel tabela = (DefaultTableModel)tab_fmt.getModel();
    tabela.setNumRows(0);
    
    try
    {
         
        con_ferramentas.resultset.beforeFirst();
         
        while(con_ferramentas.resultset.next())
        {
            String sql ="select * from tipos where codigo ="+con_ferramentas.resultset.getString("tipo");
            con_tipo.executasql(sql);
            con_tipo.resultset.first();
            tabela.addRow(new Object[]{con_ferramentas.resultset.getString("codigo"),con_tipo.resultset.getString("nome"),con_ferramentas.resultset.getString("qtd"),con_ferramentas.resultset.getString("medida")});
                
        }
        con_ferramentas.resultset.first();
    }
    catch(SQLException erro)
    {        
        JOptionPane.showMessageDialog(null,"Erro ao listar os dados na tabela "+erro);    

    }    
}
public void preencher_tabelapesq()
{
   
    tab_fmt.getColumnModel().getColumn(0).setPreferredWidth(10);
    tab_fmt.getColumnModel().getColumn(1).setPreferredWidth(150);
    tab_fmt.getColumnModel().getColumn(2).setPreferredWidth(20);
    tab_fmt.getColumnModel().getColumn(3).setPreferredWidth(70);
    
    DefaultTableModel tabela = (DefaultTableModel)tab_fmt.getModel();
    tabela.setNumRows(0);
    
    try
    {
         
        //con_tipo.executasql("select * from tipos where nome like'"+tf_pesquisa.getText()+"%'order by nome");
        
        con_pesq.executasql("SELECT ferramentas.`codigo`, tipos.`nome`,ferramentas.`qtd`,ferramentas.`medida`,ferramentas.`tipo`FROM`tipos` tipos INNER JOIN `ferramentas` ferramentas ON tipos.`nome` like '"+tf_pesquisa.getText()+"%'AND tipos.`codigo` = ferramentas.`tipo`");
        con_pesq.resultset.beforeFirst();
        while(con_pesq.resultset.next())
        {
            
            //con_ferramentas.executasql("select * from ferramentas where tipo ="+con_tipo.resultset.getString("codigo")); 
            //con_ferramentas.resultset.first();   
            tabela.addRow(new Object[]{con_pesq.resultset.getString("codigo"),con_pesq.resultset.getString("nome"),con_pesq.resultset.getString("qtd"),con_pesq.resultset.getString("medida")});
         
        }
         con_ferramentas.executasql("SELECT ferramentas.`codigo`, tipos.`nome`,ferramentas.`qtd`,ferramentas.`medida`,ferramentas.`tipo`FROM`tipos` tipos INNER JOIN `ferramentas` ferramentas ON tipos.`nome` like '"+tf_pesquisa.getText()+"%'AND tipos.`codigo` = ferramentas.`tipo`");
         con_ferramentas.resultset.first();
         mostrar_dados();       
         pesquisou = 1;
                
    }
    catch(SQLException erro)
    {        
       //JOptionPane.showMessageDialog(null,"Erro ao listar os dados na tabela "+erro);    

    }    
}
private void relat_fmt() 
    {
       if(pesquisou == 1)//verifica se passou pela pesquisa
       {    
        try//se passou pela pesquisa executa este relatório
        {
                con_pesq.resultset.beforeFirst();
            
                JRResultSetDataSource jrrs = new JRResultSetDataSource(con_pesq.resultset);
                JasperPrint jspimp = JasperFillManager.fillReport("relatórios/rel_fmt.jasper", new HashMap(),jrrs);
                JasperViewer.viewReport(jspimp,false);
            
        }
        catch(Exception erro)
        {
            JOptionPane.showMessageDialog(null, "erro ="+erro);
        }
       } 
       else//se não passou pela pesquisa executa este (com a querry)
       {
        try
        {
            con_pesq.executasql("SELECT ferramentas.`codigo`,tipos.`nome`,ferramentas.`qtd`,ferramentas.`medida`,ferramentas.`tipo` FROM`tipos` tipos INNER JOIN `ferramentas` ferramentas ON tipos.`codigo` = ferramentas.`tipo`"); 
            con_pesq.resultset.beforeFirst();
            
                JRResultSetDataSource jrrs = new JRResultSetDataSource(con_pesq.resultset);
                JasperPrint jspimp = JasperFillManager.fillReport("relatórios/rel_fmt.jasper", new HashMap(),jrrs);
                JasperViewer.viewReport(jspimp,false);
            
        }
        catch(Exception erro)
        {
            JOptionPane.showMessageDialog(null, "erro ="+erro);
        }   
       }
       pesquisou = 0;
       
    }
  
}
